package com.ttbj.core.util.security;

import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * SHA工具类
 * 
 * @author Daniel
 * @date 2017年10月27日 下午5:05:43
 * 
 */
public class SHAUtil {

	private static Logger logger = LoggerFactory.getLogger(SHAUtil.class);

	/**
	 * SHA256加密工具类
	 * 
	 * @author Daniel
	 * @date 2017年10月27日 下午5:05:58
	 * 
	 * @param input
	 * @return
	 * @throws NoSuchAlgorithmException
	 * @throws UnsupportedEncodingException
	 */
	public static String getSHA256(String input) throws NoSuchAlgorithmException, UnsupportedEncodingException {
		logger.debug("sha256加密-s input:{}", input);
		MessageDigest md = MessageDigest.getInstance("SHA-256");
		md.update(input.getBytes(Charset.forName("UTF-8")));

		byte byteData[] = md.digest();

		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < byteData.length; i++) {
			sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
		}

		String output = sb.toString();
		logger.debug("sha256加密-E output:{}", output);
		return output;
	}

	public static void main(String[] args) {
		try {
			String sha256 = SHAUtil.getSHA256("123");
			System.out.println(sha256);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
